migrant_lib 0.14.0

Simple database migration library for postgres, sqlite
Documentation

migrant_lib

Build Status crates.io:migrant_lib docs

Embeddable migration management

migrant_lib allows defining and embedding management of migrations in your compiled application.

Migrations can be defined as files or functions. Migrations can be either read from files at runtime or embedded in your executable at compile time. Migration tags must all be unique. Function migrations must have the signature fn(DbConn) -> Result<(), Box<std::error::Error>>. See the embedded/programmable example for a working sample. When working with migrations, the respective database feature must be enabled (postgresql / sqlite). The entirety of the database-specific connection library will be re-exported in the types module.

fn up(_: DbConn) -> Result<(), Box<std::error::Error>> {
    print!(" Up!");
    Ok(())
}

fn down(_: DbConn) -> Result<(), Box<std::error::Error>> {
    print!(" Down!");
    Ok(())
}

config.use_migrations(vec![
    FileMigration::with_tag("initial")?
        .up("migrations/initial/up.sql")?
        .down("migrations/initial/down.sql")?
        .boxed(),
    EmbeddedMigration::with_tag("second")?
        .up(include_str!("../migrations/second/up.sql"))
        .down(include_str!("../migrations/second/down.sql"))
        .boxed(),
    FnMigration::with_tag("custom")?
        .up(up)
        .down(down)
        .boxed(),
])?;

Migrations management identical to the migrant cli tool can also be embedded. This method only supports file-base migrations generated by migrant_lib (or migrant cli). See the migrant-cli-compatible example for a working sample.

License: MIT